//
// Created by Jisam on 05/09/2024 8:48 PM.
// Solution of   P1378 油滴扩展
// 2024-09-05 21:15:48 AC 100
//#pragma GCC optimize(3)
#include <bits/stdc++.h>

using namespace std;
#define endl "\n"
#define PSI pair<string,int>
#define PII pair<int,int>
#define PDI pair<double,int>
#define PDD pair<double,double>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>
#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
#define code_by_jisam ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
typedef long long i64;
typedef unsigned u32;
typedef unsigned long long u64;
typedef __int128 i128;
typedef double db;
int dx[] = {-1, 1, 0, 0, 1, 1, -1, -1,};
int dy[] = {0, 0, -1, 1, 1, -1, -1, 1,};

// 定义圆周率
const db pi = 3.1415926535;
// 定义最大圆的数量
const int MAXN = 10;

// 圆的数量
int n;
// 记录圆是否被访问过的数组
int vis[MAXN];
// 圆心x坐标的数组
db  x[MAXN];
// 圆心y坐标的数组
db  y[MAXN];
// 圆半径的数组
db  r[MAXN];
// 记录最大面积的变量
db ansmax;
// 矩形的两个对角点坐标
db xa, ya, xb, yb;
// 记录剩余空间面积的变量
db ss;

/**
 * 计算第i个圆在矩形中的最大半径
 * @param i 圆的索引
 * @return 第i个圆的最大半径
 */
db cal(int i){
    // 计算距离矩形边缘的最小距离
    db s1 = min(abs(x[i] - xa) ,abs(x[i] - xb));
    db s2 = min(abs(y[i] - ya) ,abs(y[i] - yb));
    db ans = min(s1,s2);
    // 遍历所有圆，计算它们对第i个圆最大半径的限制
    for(int j = 1 ;  j <= n ; j ++){
        if(j != i && vis[j]){
            db d = sqrt(((x[i] - x[j] )*(x[i] - x[j]))+((y[i] - y[j]) *(y[i] - y[j])));
            ans = min(ans,max(d - r[j],0.0));
        }
    }
    return  ans;
}

/**
 * 使用深度优先搜索来找到最大面积的覆盖方案
 * @param k 当前搜索的圆的索引
 * @param sum 当前已覆盖的面积总和
 */
void dfs(int k, db sum){
    if(k > n){
        // 更新最大覆盖面积
        ansmax = max(ansmax,sum);
        return;
    }
    // 遍历所有圆，尝试选择一个圆并计算其最大半径
    for(int i = 1; i <= n ; i ++){
        if(vis[i])continue;
        vis[i] = 1;
        r[i] = cal(i);

        // 递归搜索下一个圆
        dfs(k + 1, sum + r[i] * r[i] * pi);
        vis[i] = 0;
    }
}

/**
 * 解决方案的主函数
 */
void solution() {
    // 输入圆的数量
    cin >> n;
    // 输入矩形的两个对角点坐标
    cin >> xa >> ya >> xb >> yb;
    // 计算矩形的总面积
    ss = abs(xa - xb) * abs (ya - yb);
    // 输入所有圆的圆心坐标
    for(int i = 1 ; i <= n; i ++){
        cin >> x[i] >> y[i];
    }
    // 使用深度优先搜索找到最大面积的覆盖方案
    dfs(1,0);
    // 输出剩余未覆盖的面积
    cout << int(ss - ansmax + 0.5);
}

/**
 * 程序的入口点
 * @return 程序执行的返回值
 */
int main() {
    code_by_jisam;
    // 初始化测试用例数量
    int T = 1;
    // 输入测试用例数量
//    cin >> T;
    // 运行所有测试用例
    while (T--) {
        solution();
    }
    // 程序执行完毕，返回0
    return 0;
}
